home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / misc / gnuplot-3.7src.lha / gnuplot-3.7src / gnuplot-3.7.lha / gnuplot-3.7 / 0PORTING < prev    next >
Text File  |  1998-12-09  |  12KB  |  269 lines

  1.  
  2.  The following information is mainly geared towards people who want
  3. to port gnuplot to new platforms not covered by the installation
  4. instructions in 0INSTALL and INSTALL.gnu. Please do also read the
  5. file CodeStyle.
  6.  
  7.  Some operating system dependent preprocessor symbols are defined near
  8. the top of plot.h. If you add a new platform, some definitions must
  9. probably be added to plot.h as well.
  10.  
  11. Preprocessor Defines
  12. ********************
  13.  
  14.  These #defines should be checked before compilation. There are many
  15. makefiles provided as templates. You probably need these only if porting
  16. to a new machine. The HAVE_XXX and NO_XXX defines should be taken care
  17. of by configure if your platform supports GNU autoconf generated
  18. configure shell scripts.
  19.  
  20. THIS LIST IS SOMEWHAT OUT OF DATE NOW - CHECK configure.in, acconfig.h
  21. and config.hin
  22.  
  23. define      file            note
  24. ------      ----            --------
  25. HAVE_BCOPY  Makefile        define if you have bcopy() and no memcpy()
  26. HAVE_LGAMMA Makefile        define if you've got lgamma(3)
  27. HAVE_GAMMA  Makefile        define if you've got gamma(3)
  28. NO_MEMCPY   Makefile        define if your memcpy() is called bcopy()
  29. NO_MEMSET   Makefile        define if you have bzero() but not memset()
  30. PC          Makefile        define if compiling on a PClone
  31. MSDOS       Makefile        define if compiling under MSDOS;
  32.                               automatically defined by Microsoft C 5.10
  33. DOS32       Makefile        define for a 32-bit DOS extender (djgpp/emx)
  34. WIN32       Makefile        define for a 32-bit MS-Windows version
  35. HELPFILE    Makefile        name including path of gnuplot.gih file.
  36. VERYLARGE   plot.h          define to be largest coordinate number.
  37. SHELL       plot.h          default shell to spawn if SHELL environment
  38.                               variable not found at run-time
  39. NOCWDRC     Makefile        define to inhibit check of ./.gnuplot
  40. READLINE    Makefile        define if you want command-line editing
  41. GNU_READLINE Makefile       define if you are linking with gnu readline
  42.  
  43. Header File Availability
  44. ========================
  45.  
  46.  Generally, it is assumed that standard ANSI/ISO header files are available.
  47. The code is protected against missing standard header files with
  48. NO_XXX_H defines:
  49.  
  50. NO_STRING_H     string.h absent
  51. NO_STDLIB_H     stdlib.h absent
  52. NO_ERRNO_H      errno.h  absent
  53. NO_LIMITS_H     limits.h absent
  54. NO_LOCALE_H     locale.h absent
  55. NO_TIME_H       time.h   absent
  56. NO_SYS_TYPES_H  sys/types.h absent (not ANSI/ISO, but pretty standard)
  57.  
  58.  If non-standard header files are required, HAVE_XXX_H defines are used:
  59.  
  60. HAVE_UNISTD_H
  61. HAVE_LIBC_H    (unistd.h alternative on NEXT)
  62. HAVE_SGTTY_H             needed if there is no termios.h
  63. HAVE_SYS_BSDTYPES_H
  64. HAVE_SYS_SELECT_H        (needed for FD_* macros)
  65. HAVE_SYS_STAT_H
  66. HAVE_SYS_SYSTEMINFO_H
  67. HAVE_TERMIOS_H
  68. HAVE_VALUES_H            needed if there is no limits.h
  69.  
  70.  Note that configure use the HAVE_XXXX_H form, though. The transformation
  71. into NO_XXXX_H is done in syscfg.h. The same applies to function defines
  72. (see below).
  73.  
  74. Function Availability
  75. =====================
  76.  
  77.  It is generally assumed that standard ANSI/ISO functions are available.
  78. The code is protected against missing standard functions with NO_XXX defines:
  79.  
  80. NO_ATEXIT   - atexit() not available
  81. NO_MEMCPY   - memcpy() not available
  82. NO_MEMSET   - memset() not available
  83. NO_SETVBUF  - setvbuf() not available
  84. NO_STRCHR   - strchr() not available
  85. NO_STRERROR - strerror() not available
  86. NO_STRSTR   - strstr() not available
  87. NO_TEMPNAM  - tempnam() not available
  88.  
  89.  If certain standard ANSI/ISO C functions are not available, two alternatives
  90. come to mind: either try to achieve the same functionality without the
  91. missing function, or provide a portable implementation. Examples for this
  92. are in stdfn.c. See also stdfn.h. 
  93.  
  94.  The following defines are used to ensure availability of certain
  95. non-standard functions.
  96.  
  97.  #define          function       see file        comments
  98. -------------------------------------------------------------------
  99. HAVE_ERF          erf()          specfun.c
  100. HAVE_GAMMA        gamma()        specfun.c
  101. HAVE_GETCWD       getcwd()       stdfn.h
  102. HAVE_GETWD        getwd()        stdfn.h
  103. HAVE_INDEX        index()        stdfn.h         pre-ANSI version of strchr()
  104. HAVE_LGAMMA       lgamma()       specfun.c       prefered over gamma()
  105. HAVE_ON_EXIT      on_exit()      term/x11.trm    atexit() substitute on SunOS
  106. HAVE_RINDEX       rindex()       stdfn.h         pre-ANSI version of strrchr()
  107. HAVE_SLEEP        sleep()        command.c
  108. HAVE_SYSINFO      sysinfo()      gplt_x11.c      SysV function to get and set
  109.                                                  system information. Used
  110.                                                  instead of gethostname().
  111. HAVE_STRNCASECMP  strncasecmp()  stdfn.c
  112. HAVE_STRNICMP     strnicmp()     stdfn.c
  113. HAVE_TCGETATTR    tcgetattr()    readline.c
  114.  
  115. Terminal Selection Options
  116. ==========================
  117.  
  118.    These defines are used to include the drivers for various plotting 
  119. terminals, printers, and protocols that a given version of gnuplot can 
  120. access and the description of such for the help file.
  121.  
  122.  
  123. define      file               note
  124. ------      ----               --------
  125. TERMFLAGS   Various makefiles  (obsolete under Unix; use configure instead)
  126.                                the set of terminals you want, from below or
  127.                                term.h
  128. SHORT_TERMLIST  term.h         edit term.h to specify desired devices at
  129.                                the beginning (instead of commenting out, 
  130.                                throughout the file, devices not desired.) 
  131.  
  132. ALL_TERM_DOC   docs/termdoc.c  on-line help documentation for all devices
  133.                                rather than only for the drivers selected
  134.                                in term.h.
  135.  
  136.  
  137.    The following, non-authoritative, list serves as a guide to the range 
  138. of devices that may be selected/deselected by editing term.h.
  139.  
  140.    AED         AED 512 and AED 767
  141.    AIFM        Adobe Illustrator Format
  142.    AMIGASCREEN Amiga custom screen
  143.    APOLLO      Apollo Graphics Primitive Resource (resizable window)
  144.    ATARI       AES, VDI, MultoTOS
  145.    ATT6300     PC with AT&T 6300 graphics
  146.    BITGRAPH    BBN BitGraph
  147.    CGI         SCO CGI, hcgi
  148.    COREL       COREL! Draw Format
  149.    CORONA      PC with Corona graphics 325
  150.    DEBUG       Voluminous output for debugging to terminal
  151.    DJSVGA      MSDOS SVGA with DJGPP compiler
  152.    DXY800A     Roland DXY800A plotter
  153.    DUMB        Printer or glass dumb terminal
  154.    DXF         AutoCad (Release 10.x) dxf file format
  155.    EEPIC       EEPIC-extended LaTeX driver, for EEPIC users
  156.    EGALIB      PC with EGA/VGA graphics.
  157.    EMTEX       LaTeX picture environment with emTeX specials
  158.    EMXVGA      PC with VGA running DOS or OS/2
  159.    EPS180      Epson-LQ style 24-pin 180-dot per inch printers
  160.    EPS60       Epson-style 60-dot per inch printers
  161.    EPSONP      Epson LX-800, Star NL-10, NX-1000 and lots of others
  162.    EXCL        Talaris EXCL laser printer format
  163.    FIG         Fig graphics language (requires object.h from TransFig)
  164.    GIF         Gif output, requires special library
  165.    GPIC        Gpic for groff
  166.    GPR         Apollo Graphics Primitive Resource (fixed-size window)
  167.    HERCULES    IBM PC/Clone with Hercules graphics board
  168.    HP2648      HP2648, HP2647
  169.    HP26        HP2623A and maybe others
  170.    HP500C      HP Deskjet 500 C and maybe other Color Deskjets
  171.    HP75        HP7580, and probably other HPs
  172.    HPGL        HP7475 and (hopefully) lots of others
  173.    HPLJII      HP Laserjet II
  174.    HPPJ        HP PaintJet
  175.    IMAGEN      Imagen laser printers (300dpi) (requires -Iterm also)
  176.    IRIS        IRIS4D series computer
  177.    KERMIT      MS-DOS Kermit Tektronix 4010 emulator
  178.    LATEX       LaTeX picture environment
  179.    LINUXVGA    Linux PC with (s)vgalib
  180.    MF          Metafont Format
  181.    MGR         MGR window manager
  182.    MIF         FrameMaker MIF 3.00 Format
  183.    MTOS        Atari MiNT/MULTITOS/Magic Terminal
  184.    NEC         NEC CP6 pinwriter printer
  185.    NEXT        NeXTStep Window System (only grey scale)
  186.    OS2PM       OS/2 Presentation Manager
  187.    PBM         PBMPLUS pbm, pgm, ppm formats
  188.    PCL         HP PCL5 (actually  HPGL/2)
  189.    PNG         Portable Network Graphics, requires separate library
  190.    POSTSCRIPT  PostScript
  191.    PRESCRIBE   Kyocera Laser printer
  192.    PSLATEX     Postscript graphics, LaTeX labels and titles
  193.    PSTRICKS    PSTRICKS 0.91 format
  194.    QMS         QMS/QUIC laserprinter (Talaris 1200 and others)
  195.    REGIS       ReGis graphics (vt125, vt220, vt240, Gigis...)
  196.    RGIP        Redwood Graphics Interface Protocol
  197.    SELANAR     Selanar
  198.    STARC       Star Color Printer
  199.    SUN         Sun Microsystems Workstation
  200.    T410X       Tektronix 4106, 4107, 4109 and 420x terminals
  201.    TABLE       Text output
  202.    TANDY60     Tandy DMP-130 series 60-dot per inch graphics
  203.    TEK         Tektronix 4010, and probably others
  204.    TEXDRAW     TeXDraw format (for LaTeX)
  205.    TGIF        TGIF X11 Drawing Tool
  206.    TPIC        Tpic specials for TeX
  207.    UNIXPC      unixpc (ATT 3b1 or ATT 7300)
  208.    UNIXPLOT    unixplot
  209.    V384        Vectrix 384 and tandy color printer
  210.    VTTEK       VT like Tektronix 4010 emulator
  211.    VWS         VAX Windowing System  (UIS libraries)
  212.    X11         X11R4 window system
  213.  
  214.  
  215. Platform Related Defines
  216. ========================
  217.  
  218.  These #defines are defined automatically by various compilers or
  219. makefiles, some gnuplot routines check these defines to implement
  220. features found in the various environments. This list is certainly
  221. incomplete.
  222.  
  223. define        note
  224. ------        --------
  225. ANSI_C        if the compiler can handle ANSI prototypes
  226. AMIGA_AC_5    defined for Manx Aztec C 5.2a on the Amiga.
  227. AMIGA_SC_6_1  defined for SAS/C 6.1 or later versions on the Amiga.
  228. __amigaos__   defined by gcc on AmigaOS.
  229. AMIGA         defined for all Amiga compilers.
  230. apollo        defined by Apollo's C compilers.
  231. _CRAY         defined by CRAY's C compiler.
  232. __DECC        defined by DEC C compiler under VMS (?)
  233. __TURBOC__    defined automatically by  Borland C++ 3.x.
  234. unix          defined by most unix C compilers.
  235. vms           (and VMS) defined by VMS C compilers.
  236. __ZTC__       Zortech C compiler under MSDOS.
  237. _Windows      defined by Borland C++ 3.0 compiling for MS-Windows.
  238. __WATCOMC__   defined automatically by  Watcom C
  239. __EMX__       defined by EMX gcc (available on DOS & OS/2).
  240. OS2           defined by compilers under OS/2.
  241.  
  242. Defines Used in Gnuplot
  243. =======================
  244.  
  245.  The following defines are used to achieve better portability. Most of
  246. them are wrappers.
  247.  
  248.  #define          wraps/redefines            see file    comments
  249. ------------------------------------------------------------------
  250. GP_GETCWD         getwd()/getcwd() alikes    stdfn.h
  251. GP_FARMALLOC      faralloc()/malloc()        alloc.c     Windows environment
  252. GP_FARREALLOC     farrealloc()/realloc()     alloc.c     Windows environment
  253. GP_SLEEP          sleep()                    command.c
  254. GP_SYSTEMINFO     sysinfo()/gethostname()    gplt_x11.c
  255. GPFAR             `far' compiler directive   plot.h      MSDOS and Win16
  256. GPHUGE            `huge' compiler directive  plot.h      MSDOS and Win16
  257. GP_INLINE         `__inline' directive       plot.h
  258. GPMAX             max (a,b)                  plot.h
  259. GPMIN             min (a,b)                  plot.h
  260.  
  261.  The following symbols are defined when using DEBUG:
  262.  
  263. DEBUG_WHERE       prints filename and line number to stderr *without* linefeed
  264. FPRINTF(a)        uses DEBUG_WHERE, passes a to fprintf
  265.  
  266.  Usage example: FPRINTF((stderr, "function foo returned %d\n", bar));
  267.  Result:        readline.c:620 function foo returned -1
  268.  
  269.